The present invention relates in general to the data processing field. More specifically, the present invention relates to the field of input-output device interface mechanisms.
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices. However, even today""s most sophisticated computer systems continue to include many of the basic elements that were present in some of the first computer systems. Such elements include the computer system""s processor, memory, and input-output devices (I/O devices for short). A computer system""s processor is the intelligent portion of the computer system. The processor is responsible for executing programs that interpret and manipulate information that is given to the computer system by the computer system""s user or users. I/O devices are extremely important because they play a major role in getting the necessary information into the computer system, storing the information, and making the information available to the computer system""s users. After all, how valuable would a computer system be if there were no way to get information in or out? Example I/O devices include information entry and retrieval devices such as personal terminals and workstations, mass storage devices such as magnetic tape and disk devices, and output devices such as printers.
This patent document is primarily related to the operation and management of I/O devices on a computer system. While I/O devices are extremely important to what makes up a computer system, they are nevertheless perhaps the most difficult computer system entity to efficiently control and manage. This general I/O device problem stems largely from the fact that there are so many different types of I/O devices and that each device has so many different requirements. For example, managing a magnetic tape device is substantially different than managing a workstation). Of course, the problem is only made worse by the fact that there are many different models of I/O devices made by any number of makers.
Quite naturally, though, computer system users do not want to have to understand the particulars of a given type of device or have to understand the distinguishing characteristics of different models of any one device, yet the users still want to be able to make use of advanced devices and features very rapidly. The users want to be able to attach a new device to their computer system and have the computer system operate as if it had originally been designed to operate with this new device. If the new device is able to support existing features, the users would like those features to be available for use when the device is installed, without having to wait for their operating system provider to make the necessary programming changes. These user requirements pose a tremendous problem to the operating system provider because some changes require wholesale modifications to the programs that support the I/O devices.
Indeed, existing operating systems do not control and manage I/O devices in a way that satisfies these user requirements. New devices are often difficult to add because large portions of the computer system""s programming must be changed to accommodate the addition. Similarly, new features of a recently upgraded I/O device are unavailable until the computer system""s programming is changed to support those new features.
Without a mechanism that can shelter the user from the particulars of controlling and managing I/O devices, while still allowing for rapid changes to existing I/O devices and speedy addition of new I/O devices, the computer industry will continue to be plagued by the problems of managing and controlling these important computer system resources.
It is, therefore, a principal object of this invention to provide an enhanced I/O device interface mechanism that controls and manages I/O devices in a way that permits speedy change or addition of I/O devices.
It is another object of this invention to provide an enhanced object-oriented I/O interface framework mechanism.
It is still another object of this invention to provide an enhanced object-oriented I/O interface framework mechanism having core function that hides the details of interface hardware, protocols, initialization, and service strategies from the framework consumer in addition to extensible function that allows the consumer to add new I/O devices and make changes to existing I/O devices.
It is yet another object of this invention to provide an enhanced object-oriented I/O interface framework mechanism having objects that represent different I/O devices, objects that represent information about different I/O devices, objects that perform diagnostics on I/O devices, and objects that perform statistical analysis on I/O devices.
These and other objects of the present invention are accomplished by the I/O device interface framework apparatus disclosed herein.
As discussed in the Background section, there is serious need in the industry for a mechanism that provides for rapid changes to existing I/O devices and speedy addition of new I/O devices. These important benefits are provided by the I/O device interface framework of the present invention. The framework mechanism of the present invention was designed and constructed using object-oriented technology. Those who are unfamiliar with object-oriented technology, or with object-oriented framework mechanisms, should read the object-oriented overview section of the Description of the Preferred Embodiments section.
At the most general level, the framework mechanism of the present invention is made up of three interdependent controllers. These controllers are referred to herein as the hardware resource administrator, the information controller, and the device controller. The hardware resource administrator is responsible for organizing information about I/O devices and for making the organized information available to the other controllers. Therefore, the hardware resource administrator is comprised of objects that work together to 1) identify the various I/O devices on the computer system, 2) find and filter I/O device information such that it is in a form that is of value to the other controllers, and 3) notify objects of the other controllers of changes in the status of any of the computer system""s I/O devices. Since the hardware resource administrator is essentially an internal service mechanism, it is designed to be a core function of the framework mechanism. This means that the hardware resource administrator is a part of the framework mechanism that shelters users and system administrators from the particulars of controlling and managing I/O devices. As such, the hardware administrator has been designed such that it is not to be subject to extension or customization by the framework consumer.
The information controller is responsible for gathering information about I/O devices and for changing and/or updating certain I/O device information. Accordingly, the information controller is made up of individual objects that each represent the characteristics of a particular I/O device. Each of these objects depends upon hardware resource administrator and device controller objects to gather representative information about individual I/O devices. Since each of the individual information controller objects is representative of an individual device, the information controller has been designed as an extensible function of the framework mechanism. This means that the information controller is a part of the framework mechanism that provides for rapid changes to existing I/O devices and speedy addition of new I/O devices. As such, the information controller has been designed such that it can be extended and/or customized by the framework consumer.
The device controller is responsible for controlling the actual operation of the individual devices, and for performing statistical and diagnostic analysis on the individual I/O devices. Accordingly, the device controller is made up of objects that work together to perform all of these functions. Certain device controller objects rely on hardware resource administrator objects to identify individual information controller objects and on the individual information controller objects to discern particular information about the individual devices themselves.
Unlike the hardware administrator, the device controller has been designed to have both core and extensible function. Essentially, the core function is the way in which the objects of the device controller interact to control the I/O device and to perform statistical and diagnostic analysis. The extensible function, on the other hand, allows the framework consumer to quickly add or change I/O devices. Since the device controller is made up of both core and extensible function, parts of the device controller have been designed such that they can be extended and/or customized by the framework consumer, while other parts have been designed such that they are not to be subject to extension or customization by the framework consumer.